#ifndef DCFANDRV_H					// Judge the "DisDrv_h" has been defined or not,make sure this file only include once 
#define DCFANDRV_H					// define "MCU_8513_H" 
#ifdef	EXTR				        	//                                                                               
#undef	EXTR                        	// undefine "EXTR"                                                               
#endif
						                                                                                         
#ifdef	DCFANDRV_C			    		// redefine "EXTR",make sure EXTR defined according to the constant of "main".   

// #define	FAN_TIMER_RATE			(100)           // 时基中断时间  单位us
#define	PLUSE_PER_CYCLE			(12)                // 电机转一圈输出的脉冲数 
#define	CAL_PER_TURN			(2)                 // 转多少圈检测一次转速
#define FAN_MAX_SPEED           (4000)              // 最高转速 单位：转/分钟
#define FAN_MIN_SPEED           (300)               // 最低转速 单位：转/分钟

/*风机驱动统一用250hz的PWM(周期为4000us)，调节宽度0~4000us。反馈脉冲以下降弦作为中断 */
#define MAX_PWM_DUTY			(3800)              // 最大占空比
#define MIN_PWM_DUTY			(1000)              // 最小占空比
#define START_PWM_DUTY			(MIN_PWM_DUTY)      // 启动占空
#define MAX_ADJ_VAL				(20)                // 最大调节度

#define GetFanFBPin()           (MR88FX02_Gpio_Get(PI_FAN_FB))              // 风机反馈O电平
#define StarFanPwm(x)        	{BSTIM1->CCR = (x);BSTIM1->CR_b.CEN = 1;}   // PWM启动
#define ChangeFanPwm(x)      	{BSTIM1->CCR = (x);}                        // PWM变更
#define StopFanPwm()            {BSTIM1->CCR = 0;}                          // PWM停止

#define EXTR                                                                                                         
#else						                                                                                         
#define EXTR	extern                                                                                               
#endif 


EXTR void InFanBckIRQ(void);                        // 脉冲外部中断函数，在外部中断函数里执行。
EXTR void FanDrvProc(void);                         // 风机驱动主函数，在主循环执行
EXTR void SetInFanSpeed(unsigned short Speed);      // 设置目标转速函数 单位：转/分钟
EXTR unsigned short GetCurFanSpeed(void);           // 获取当前转速函数 单位：转/分钟
EXTR unsigned char GetFanErrCnt(void);              // 风机错误计数

#endif



//测试从0占空比累加是否能启动
//试一下大负载启动是否太慢
//故障重启判断最高转速（失速）
